home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / GFXFX2.ZIP / PLASMAT.PAS < prev    next >
Pascal/Delphi Source File  |  1995-02-14  |  1KB  |  61 lines

  1.  
  2. program modeq_plasma; { PLASMAT.PAS }
  3. { Assembler/Mode-q version of Plasma, by Bas van Gaalen }
  4. uses u_mdx,u_vga,u_pal,u_kb;
  5. var stab1,stab2:array[0..255] of byte; i1,j1:byte;
  6.  
  7. procedure plasma; assembler;
  8. asm
  9.   mov es,u_vidseg
  10.   add i1,254
  11.   add j1,1
  12.   mov di,70*256
  13.   xor cx,cx
  14.   xor bx,bx
  15.  @l0:
  16.   mov bl,cl
  17.   add bl,i1
  18.   mov dl,byte ptr stab1[bx]
  19.   mov bl,j1
  20.   mov dh,byte ptr stab2[bx]
  21.  @l1:
  22.   mov bl,ch
  23.   add bl,dl
  24.   mov al,byte ptr stab1[bx]
  25.   mov bl,cl
  26.   add bl,dh
  27.   add al,byte ptr stab2[bx]
  28.   mov ah,al
  29.   mov [es:di],ax
  30.   add di,256
  31.   mov [es:di],ax
  32.   sub di,254
  33.   add ch,2
  34.   jnz @l1
  35.   add di,256
  36.   add cl,4
  37.   jnz @l0
  38. end;
  39.  
  40. var x,y:byte;
  41. begin
  42.   mdx_setmodex(mdx_256x256c,256); { set mode-q chained using the mode-x unit }
  43.   for x:=0 to 255 do begin
  44.     setrgb(x,32+trunc(31*sin(x*pi/128)),
  45.              32+trunc(31*sin(x*pi*2/128)),
  46.              32+trunc(31*cos(x*pi*3/128)));
  47.   end;
  48.   for x:=0 to 255 do begin
  49.     stab1[x]:=round(sin(2*pi*x/255)*128)+128;
  50.     stab2[x]:=round(cos(2*pi*x/255)*128)+128;
  51.   end;
  52.   {u_border:=true;}
  53.   repeat
  54.     vretrace;
  55.     setborder(245);
  56.     plasma;
  57.     setborder(0);
  58.   until keypressed;
  59.   setvideo(u_lm);
  60. end.
  61.